18 前端基础和底层原理
关于前端需要重点学习的基础知识和基本原理:
- JavaScript 核心原理:学好语言的特性,并且详细了解其中的各种坑。
- 浏览器的工作原理:是前端程序员需要了解和明白的关键知识点。
- 网络协议 HTTP:要着重了解,尤其是 HTTP/2,还有 HTTP 的几种请求方式:短连接、长连接、Stream 连接、WebSocket 连接。
- 前端性能调优:上手各种性能调优技术。
- 框架学习:React 和 Vue 两个框架,Virtual DOM 技术是其底层技术,组件化是其思想,管理组件的状态是其重点。对于 React 来说,函数式编程是其编程思想。
- UI 设计:Google 的 Material UI,比较流行的 Atomic Design 等。
HTML 5
HTML 5 学习推荐
- HTML 5 权威指南 ,本书面向初学者和中等水平 Web 开发人员,是牢固掌握 HTML 5、CSS 3 和 JavaScript 的必读之作
- HTML 5 Canvas 核心技术 ,做 HTML 5 游戏
SVG、Canvas 和 WebGL
- SVG: Scalable Vector Graphics
- Canvas API
- The WebGL API: 2D and 3D graphics for the web
资源列表
- Awesome HTML5 ,GitHub 上的 Awesome HTML5,有大量的资源和技术文章
- Awesome SVGAwesome Canvas
- Awesome WebGL
CSS
- MDN Web Doc - CSS
- LESS 和 SaSS, CSS 预处理工具,可以提高效率
- Principles of writing consistent, idiomatic CSS
- Opinionated CSS styleguide for scalable applications
- Google HTML/CSS Style Guide
CSS Framework
- Bootstrap,不错的 UI 组件,页面布局方案,可以非常方便也非常快速地开发页面
- Semantic UI,清新 UI
- Foundation,主打响应式界面的
- Flexbox 的 Bulma,基于flex
- Normalize、MiniRest.css、sanitize.css 和 unstyle.css,把浏览器中的一些 HTML 标签给标准化掉
- Awesome CSS Frameworks
CSS 相关实践
CodePen’s CSS
Github 的 CSS
Medium’s CSS is actually pretty f***ing good
CSS at BBC Sport
Refining The Way We Structure Our CSS At Trello
A Scalable CSS Reading List,写出可扩展的 CSS
JavaScript
- JavaScript: The Good Parts ,介绍 JavaScript 语言本质的权威图书
- Secrets of the JavaScript Ninja ,深入剖析 JavaScript 语言的书,适合具备一定 JavaScript 基础知识的读者阅读
- Effective JavaScript ,深刻辨析 JavaScript 的内部运作机制、特性、陷阱和编程最佳实践,将它们高度浓缩为极具实践指导意义的 68 条精华建议
ES6 的学习
- ES6 in Depth,或者 A simple interactive ES6 Feature list ,或者 阮一峰翻译的 ES6 的教程
- ECMAScript 6 Tools ,ES6 工具的列表,可以帮助提高开发效率
- Modern JS Cheatsheet
You Don’t Know JS 系列
- You Don’t Know JS: “Up & Going”
- You Don’t Know JS: “Scope & Closures”
- You Don’t Know JS: “this & Object Prototypes”
- You Don’t Know JS: “Types & Grammar”
- You Don’t Know JS: “Async & Performance”
- You Don’t Know JS: “ES6 & Beyond”
编程范式相关
- Glossary of Modern JavaScript Concepts: Part 1 ,编程范式方面的内容,比如纯函数、状态、可变性和不可变性、指令型语言和声明式语言、函数式编程、响 应式编程、函数式响应编程
- Glossary of Modern JavaScript Concepts: Part 2 ,作用域和闭包,数据流,变更检测,组件化
讲 JavaScript 内在的文章
JavaScript. The Core: 2nd Edition
JavaScript. The Core (older ES3 version)
JS scope: static, dynamic, and runtime-augmented
How JavaScript Works
- An overview of the engine, the runtime, and the call stack
- Inside the V8 engine + 5 tips on how to write optimized code ,了解 V8 引擎。同时推荐 Understanding V8’s Bytecode ,了解 V8 引擎的底层字节码
- Memory management + how to handle 4 common memory leaks ,内存管理和 4 种常见的内存泄露问题
- Event loop and the rise of Async programming + 5 ways to better coding with async/await ,Event Loop 和异步编程
- Deep dive into WebSockets and HTTP/2 with SSE + how to pick the right path ,WebSocket 和 HTTP/2
- A comparison with WebAssembly + why in certain cases it’s better to use it over JavaScript ,JavaScript 内在原理
- The building blocks of Web Workers + 5 cases when you should use them ,Web Workers 技术
- Service Workers, their lifecycle and use cases ,Service Worker 技术
- The mechanics of Web Push Notifications ,Web 端 Push 通知技术
- Tracking changes in the DOM using MutationObserver ,Mutation Observer 技术
- The rendering engine and tips to optimize its performance ,渲染引擎和性能优化
- Inside the Networking Layer + How to Optimize Its Performance and Security ,网络性能和安全相关
- Under the hood of CSS and JS animations + how to optimize their performance ,CSS 和 JavaScript 动画性能优化
JavaScript 性能相关
- The Cost Of JavaScript
- JavaScript Start-up Performance
相关资源
- JavScript has Unicode Problem , JavaScript 处理 Unicode 的文章
- JavaScript Algorithms ,用 JavaScript 实现的各种基础算法库
- JavaScript 30 秒代码 ,一堆你可以在 30 秒内看懂各种有用的 JavaScript 的代码
- What the f*ck JavaScript ,一堆 JavaScript 搞笑和比较 tricky 的样例
- Airbnb JavaScript Style Guide ,Airbnb 的 JavaScript 的代码规范
- JavaScript Patterns for 2017 ,YouTube 上的一个 JavaScript 模式分享
浏览器原理
了解浏览器工作原理
- 《How browsers work》或者后来整理的 《How Browsers Work: Behind the scenes of modern web browsers》
- 《浏览器的渲染原理简介》精简版本
Virtual DOM
- How to write your own Virtual DOM
- Write your Virtual DOM 2: Props & Events
- How Virtual-DOM and diffing works in React
- The Inner Workings Of Virtual DOM
- 深度剖析:如何实现一个 Virtual DOM 算法
- Vitual-DOM 实现参考
- Matt-Esch/Virtual-DOM
- Maquette
网络协议
- High Performance Browser Networking ,涵盖 Web 开发者技术体系中应该掌握的所有网络及性能优化知识
HTTP/2
- Gitbook - HTTP/2 详解
- http2 explained
- HTTP/2 for a Faster Web
- Nginx HTTP/2 白皮书
- HTTP/2 的两个 RFC:
- RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2) ,HTTP/2 的协议本身
- RFC 7541 - HPACK: Header Compression for HTTP/2 ,HTTP/2 的压缩算法
WebSocket
- HTML5 WebSocket: A Quantum Leap in Scalability for the Web ,比较了 HTTP 的几种链接方式,Polling、Long Polling 和 Streaming,并引入了终级解决方案 WebSocket
- StackOverflow: My Understanding of HTTP Polling, Long Polling, HTTP Streaming and WebSockets ,HTTP 各种链接方式的比较
- An introduction to Websockets ,WebSocket 的简单教程
- Awesome Websockets ,GitHub 的 Awesome 资源列表
- 一些和 WebSocket 相关的想法
- Introducing WebSockets: Bringing Sockets to the Web
- Websockets 101
- Real-Time Web by Paul Banks
- Are WebSockets the future?